package com.yuexunxinxi.carefree.service.a_quest;

import com.yuexunxinxi.carefree.entity.AQuest;
import com.yuexunxinxi.carefree.entity.vo.AQuestVo;
import com.yuexunxinxi.carefree.utils.R;

import java.util.List;

/**
 * 作者: 李咨辰
 * 文件名: AQuestService.java
 * 路径: com.yuexunxinxi.carefree.service.quest
 * 时间: 2024-10-14 14:48
 * 版本: 1.0
 * 描述: TODO 任务
 **/
public interface AQuestService {
    /**
     * 获取首页数据
     *
     * @param sortId   分类编号
     * @param current  当前页
     * @param pageSize 每页条数
     * @return 首页数据
     */
    List<AQuest> getQuestByHomeList(int sortId, int current, int pageSize);

    /**
     * 获取条数
     *
     * @param sortId 分类编号
     * @return 条数
     */
    Long getQuestTotal(int sortId);

    /**
     * 添加需求
     *
     * @param aQuest 用户上传的需求
     * @return 添加结果
     */
    int addQuest(AQuest aQuest);


    /**
     * 根据任务编号和当前登录用户获取任务信息
     *
     * @param questId 任务编号
     * @param userId  用户编号
     * @return 任务详情
     */
    AQuestVo getQuestByQuestIdAndUserId(Long questId, Long userId);

    /**
     * 查询任务列表(地图)
     *
     * @param city 城市
     * @return 任务列表
     */
    List<AQuestVo> getMapList(String city);

    /*
     * 查询任务列表(个人中心)
     * @param userId 用户编号
     * @return 任务列表
     * */
    List<AQuestVo> getInitiatorList(String userId, int current, int pageSize);

    /**
     * 查询任务列表(个人中心)总数
     *
     * @param userId 用户编号
     * @return 总数
     */
    Integer getInitiatorTotal(String userId);

    /*
     * 查询任务列表(待完成订单)
     * @param userId 用户编号
     * @param publishStatus
     * @return 任务列表
     * */
    List<AQuestVo> getReceiverList(String userId, Integer publishStatus);

    /**
     * 截取订单
     * @param userId 用户编号
     * @param questId 任务编号
     * @return msg提示
     */
    R receive(long userId, long questId);


    /**
     * 更新任务状态
     *
     * @param questId       任务编号
     * @param publishStatus 状态
     * @return 更新结果
     */
    boolean updateQuestStatus(Long questId, Integer publishStatus);
}
